#include <iostream>
#include <string>

using namespace std;

template <typename T, size_t N>
void print(const T (&a)[N])
{
    for (auto iter = begin(a); iter != end(a); iter++)
    {
        cout << *iter << " ";
    }
    cout << endl;
}

template <typename T, size_t N>
int printptr(const T (*a)[N])
{
    cout << N << endl;
    return N;
}

template <typename T, size_t N>
constexpr int arr_size(const T (&a)[N])
{
    return N;
}

int main(int argc, char *argv[])
{
    int a[6] = {0, 2, 4, 6, 8, 11};
    string vs[3] = {"Hello", "World", "!"};

    print(a);
    print(vs);
    printptr(&a);

    return 0;
}

